import pandas as pd
from pandas import DataFrame

from datareport.api import ImageUtil
from datareport.impl import StaticDF
from datareport.impl.paragraph.base.BaseParagraph import BaseParagraph
from datareport.api.annotation.Style import style


@style()
class ShiJi_KaiZhanChangCi_Erji_20(BaseParagraph):
    """
    二级党组织分布
    """

    def __init__(self):
        super().__init__()
        self.text = ('''(2)从二级党组织分布来看: {}组织生活实际开展场次最高，\
为{}场次，平均{}场/月/支部。{}每月开展组织生活频次最高，为{}场/月/支部。''')
        self.sort = 11
        self.tables: [DataFrame] =[]
        self.section = 5

    def plot(self, org_df, plt):
        pass


    def getData(self, result):
        pass

    def start(self, conn, year, plt):
        df=StaticDF.getDF()
        org_df=df.groupby('partyOrgName')['num'].sum().reset_index(drop=False)
        org_df['avg']=org_df['partyOrgName'].apply(lambda x:avg(x,df))
        org_df.rename(columns={'partyOrgName': '二级党组织', 'num': '场次', 'avg': '均值（/月/支部）'},inplace=True)
        self.tables.append(org_df)
        org_df=org_df.sort_values('场次',ascending=False)
        avg_df=org_df.sort_values('均值（/月/支部）',ascending=False)
        self.text=self.text.format(org_df['二级党组织'].values[0],
                                   org_df['场次'].values[0],
                                   org_df['均值（/月/支部）'].values[0],
                                   avg_df['二级党组织'].values[0],
                                   org_df['均值（/月/支部）'].values[0]
                                  )

        self.image=ImageUtil.plot(org_df,ylable='组织生活开展场次',legend_switch=True)

def avg(x,org_df:DataFrame):
    sum=len(org_df[org_df['partyOrgName']==x])
    branchs=len(org_df[org_df['partyOrgName'] == x]['partyBranchName'].drop_duplicates())
    return round(sum/(12*branchs),1)